package com.example.rpc.main;

import java.util.ArrayList;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.alipay.sofa.rpc.config.ApplicationConfig;
import com.alipay.sofa.rpc.config.MethodConfig;
import com.alipay.sofa.rpc.config.ProviderConfig;
import com.alipay.sofa.rpc.config.RegistryConfig;
import com.alipay.sofa.rpc.config.ServerConfig;
import com.example.rpc.service.HelloService;
import com.example.rpc.service.impl.HelloServiceImpl;

import cn.hutool.core.lang.UUID;

/**
 * Quick Start Server
 */
public class QuickStartServer {
	private static Logger logger = LoggerFactory.getLogger(QuickStartServer.class);
	
    public static void main(String[] args) {
    	
    	RegistryConfig registryConfigZk = new RegistryConfig()
    	         .setProtocol("zookeeper")
//    	         .setRegister(true)
    	         .setAddress("127.0.0.1:2181");
    	
    	RegistryConfig registryConfigConsul = new RegistryConfig()
   	         .setProtocol("consul")
   	         .setAddress("127.0.0.1:8500");
    	
    	RegistryConfig registryConfigLocal = new RegistryConfig()
      	         .setProtocol("local")
      	         .setFile("./logs/localRegistry.reg");
    	
    	List<RegistryConfig> registryConfigs = new ArrayList<RegistryConfig>();
//    	registryConfigs.add(registryConfigZk);
//    	registryConfigs.add(registryConfigConsul);
    	registryConfigs.add(registryConfigLocal);
    	
        ServerConfig serverConfig = new ServerConfig()
                .setProtocol("bolt") // 设置一个协议，默认bolt
                .setPort(12200) // 设置一个端口，默认12200
                .setDaemon(false); // 非守护线程

        //多个服务
        List<ServerConfig> serverConfigs = new ArrayList<ServerConfig>();
        serverConfigs.add(serverConfig);
        
        MethodConfig methodConfigA =new MethodConfig();
        MethodConfig methodConfigB =new MethodConfig();
        List<MethodConfig> methodConfigs =new ArrayList<MethodConfig>();
        methodConfigs.add(methodConfigA);
        methodConfigs.add(methodConfigB);
        
        ApplicationConfig application=new ApplicationConfig(); 
        application.setAppName("server");
        
        ProviderConfig<HelloService> providerConfig = new ProviderConfig<HelloService>()
                .setInterfaceId(HelloService.class.getName()) // 指定接口
                .setRef(new HelloServiceImpl()) // 指定实现
//                .setUniqueId(UUID.fastUUID().toString())
                .setRegistry(registryConfigs)
//                .setMethods(methodConfigs)    //服务端设置
                .setServer(serverConfigs); // 指定服务端

        providerConfig.export(); // 发布服务
        
        logger.info("start success..");
    }
}